home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 25
/
AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso
/
PublicDomain
/
Spiele
/
Phalanx-XVIII
/
README
< prev
next >
Wrap
Text File
|
1998-09-06
|
20KB
|
317 lines
Phalanx is a chess playing program
Copyright (c) 1997, 1998 Dusan Dobes
LICENSE AND WARRANTY
- Phalanx is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
- Phalanx is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
along with Phalanx; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
WHERE TO GET PHALANX
ftp://sunsite.unc.edu/pub/Linux/games/strategy/ (and mirrors)
ftp://ftp.math.muni.cz/pub/math/people/Dobes/
COMPILING, PORTABILITY
Compiling is simple, at least under Linux. Just type `make'. Phalanx is
developed under GNU C, GNU Debugger, and GNU Make. It's probably possible to
compile it on many different platforms, but today i have no oportunity to try
it on any other platform than Linux and HP-UX. If your system does not
support GNU exensions (e.g. long options), remove '-DGNUFUN' from DEFINES in
makefile. If you have incompatible 'make', try this:
$ cat *.c > allphalanx.c; cc -O allphalanx.c -o phalanx
INTERFACE, COMMAND LINE OPTIONS
Phalanx is xboard compatible. Running with xboard: 'xboard -fcp phalanx'.
Note that permanent brain (pondering) is off by default. Newer versions of
xboard set it on with the 'hard' command. If this does not work, try
'xboard -fcp "phalanx -p+"' or (for <4.0.0 versions of xboard) change your
initString (see Xboard documentation for details). It's better to stop
permanent brain in both programs, when playing Phalanx against another
program on a machine with one CPU.
It's also possible to run phalanx without xboard. Do "phalanx -h" to get
a list of command line options. One important command of phalanx's ASCII
interface is "help".
MORE ABOUT INTERFACE
I'm trying to write an interface that fits following three requirements:
- Xboard compatibility. For best results, get the latest version of Xboard.
- shell-like interface that allows running commands in a batch. It's very
useful for testing. Example: look into the file test.fin. It's a set
of chess problems and solutions. You can simply send this file to
Phalanx's stdin:
$ phalanx -c+ -o- -b- -f10 < test.fin | tee result
( Where: -c+ .... use cpu time
-o- .... don't use polling input
-b- .... no opening book
-f10 ... fixed time 10 seconds per move )
Watch how it works.
- Acceptable ASCII interface.
OPENING BOOK
From version VI, there are two book files - primary (pbook.phalanx), and
secondary (sbook.phalanx). You can specify book directories via command line
(-P, -S) or use environment variables PHALANXPBOOKDIR and PHALANXSBOOKDIR.
Otherwise Phalanx tries to find its book files in current directory
(./book.phalanx, ./sbook.phalanx) and finally in compiled-in directory
(/usr/local/lib/phalanx). You can change the compiled-in directory in
makefile.
- pbook.phalanx is 'hand'-written, text book. One line per position, sorted.
This time, it's bigger than really needed, because it was the only book
file till version V. The size will be smaller and the line format might
change to EPD+SAN in future.
- sbook.phalanx is binary book, generated from large PGN files. Six bytes
per move (4 hash key, 2 move). You can generate your own sbook.phalanx
with 'phalanx bcreate', like this:
$ ./phalanx bcreate < manyGMgames.pgn
or:
$ ./phalanx bcreate 1250000 < manyGMgames.pgn
( where 1250000 is internal buffer size in cells. One cell takes 12 bytes.
Bigger is better, only if it's too big a part of the buffer is unused.
E.g. 1250000 is enough to parse Crafty's 'medium' book source - 29MB. )
A position is first searched in pbook.phalanx. Only if it's not found there,
sbook.phalanx is searched.
INSIDE THE MACHINE
Phalanx uses (traditional) 10x12 board implementation. There are three
often used board implementations: "8x8" (GNU Chess), "bitboard" (Crafty),
and "10x12" (Nimzo, Phalanx). In short, "10x12" is easy to implement and
the code and basic data structures are small ( == fast on PC). The engine
uses many well known techniques: PVS (principal variation search),
transposition/killer table, static-eval cache, history killers, SEE (static
exchange evaluator), null move pruning, forward pruning, internal iterative
deepening, chess-specific extensions.
AUTHOR
Dusan Dobes, dobes@math.muni.cz
HISTORY
The rest of this file is history of Phalanx.
I First version to play a legitimate game, it finally knows all rules.
19970304 I spent a lot of time on tuning transposition table code and
extensions. The program scores 78% at large Reinfeld's test set, 10 s
per move, on 486+/150.
II Two killer heuristics added: well known history killers (modified)
199704?? and `reaction' killers (the killer is connected to the previous enemy
move). The tree search is faster, especially at `quiet' positions.
Hashtable presearch. Modified hashentry replacement strategy. Better
evaluation function, it now knows more about passed pawns, the
endgame play is much stronger. Fixed bug at 7-th row pawn push
extension routine. Faster output - using sprintf() to prepare the
output and then only one printf. New command line options: -t, -T to
set the hashtable size.
III Permanent brain (pondering). King safety evaluation. Hung pieces
19970529 static evaluation. Null move pruning. Forward pruning. Better time
heuristics - forced moves are played quickly. New cmd-line options:
-f, -x, -p, -s.
IV New option -c to determine whether to use cpu or real time. The
19970721 internal timing resolution changed to 1/100 of a second. Xboard
compatible editing position. Removed en-passant capture from
quiescence search. Changes in static-eval function. Piece list
implemented - speedup is between 0 and 20%; more in endgame. Pinned
pieces static evaluation. Better evaluation of weak pawns. Trapped
bishop and knight evaluation. Bugfix at extending check evasions.
Bugfix: development bonus was computed but not added to total
evaluation. Output change: '!' means turn, '!!' means value out of
window.
V Mostly interface changes, no big improvement in playing strength.
19970803 Xboard compatibility fixes: 'post' is no more switch, new command
'remove'. Fixed command 'level': 'level 0 5 0' (five minutes per
game) should work, also increment (ICS) levels ('level 0 2 12').
Increment can be given at command line. New option -o (polling
input) - when running tests, phalanx needs -o-. New feature of
autotesting: all incorrect results are written into file
'notfound.fin'. Small output changes for better compatibility with
xboard 3.6.2. Eliminated some bad turns in evaluation. Better king
safety evaluation - counting safe checks available.
VI Fixed small efficiency bug in evaluate.c. Improved time heuristics
19970915 for increment (ICS) levels. Optimized hashing - about 5% overall
speedup. Fixed bug in ptime(). User is now allowed to continue play
even if the position is drawn by 3-rep., material, or 50 moves rule.
Fixed bug - Draw requests are now always ignored, not always accepted
:-). Xboard-compatible 'Illegal move' message. Binary opening book,
created from PGN by bcreate. This distribution is bigger than any
previous because it contains a small example of binary book
('sbook.phalanx', 174kB, 29634 moves). SAN in